package com.um.jdy.rpc.api;

import com.um.jdy.rpc.entity.EBDeviceInfo;
import com.um.jdy.rpc.entity.EBDeviceParams;
import com.um.springcloud.dubbo.cluster.DeviceKey;

/**
 * 电单车充电桩
 * 平台调用设备RPC
 *
 * @author 邓南辉
 * 日期 2022/3/30
 * 版权所有 广州优匠科技有限公司
 */
public interface RpcEBDeviceService {

    /**
     * 请求启动充电
     *
     * @param seq        序列号
     * @param imei IMEI码
     * @param port       端口号
     * @param duration   充电时长(秒)
     * @param overPower 过载功率
     */
    String reqStartCharge(String seq, DeviceKey imei, Integer port, Integer duration,Integer overPower,Integer payAmount);

    /**
     * 请求更新充电时间
     *
     * @param seq        序列号
     * @param imei IMEI码
     * @param port       端口号
     * @param duration   充电时长(秒)
     * @param overPower 过载功率
     */
    String reqUpdateCharge(String seq, DeviceKey imei, Integer port, Integer duration,Integer overPower);

    /**
     * 请求停止充电
     *
     * @param seq        序列号
     * @param imei       IMEI码
     * @param port       端口号
     */
    String reqStopCharge(String seq, DeviceKey imei, Integer port);

    /**
     * 请求查询端口状态
     *
     * @param seq        序列号
     * @param imei       IMEI码
     */
    String reqQueryPorts(String seq, DeviceKey imei);

    /**
     * 请求下发语音播放
     *
     * @param seq        序列号
     * @param imei       IMEI码
     * @param voice      播放文字
     */
    String reqPlayTTS(String seq, DeviceKey imei, String voice);

    /**
     * 请求下发设备重启
     *
     * @param seq        序列号
     * @param imei       IMEI码
     */
    String reqRestart(String seq, DeviceKey imei);

    /**
     * 请求下发参数设置
     *
     * @param seq        序列号
     * @param imei       IMEI码
     * @param params     设备参数
     */
    String reqSetParams(String seq, DeviceKey imei, EBDeviceParams params);


    /**
     * 回复设备登录
     *
     * @param seq        序列号
     * @param imei       IMEI码
     * @param info       设备信息对象
     */
    String respDeviceLogin(String seq, DeviceKey imei, EBDeviceInfo info);

    /**
     * 回复设备心跳
     *
     * @param seq        序列号
     * @param imei       IMEI码
     */
    String respDeviceHeart(String seq, DeviceKey imei);

    /**
     * 回复设备端口上报
     *
     * @param seq        序列号
     * @param imei       IMEI码
     */
    String respPortsNotify(String seq, DeviceKey imei);

    /**
     * 回复充电数据
     *
     * @param seq        序列号
     * @param imei       IMEI码
     */
    String respChargingData(String seq,DeviceKey imei);

    /**
     * 回复刷卡充电
     *
     * @param seq        序列号
     * @param imei       IMEI码
     * @param port       端口
     * @param duration   充电时长（秒）
     * @param power      过载功率
     */
    String respSlotCard(String seq, DeviceKey imei, Integer port, Integer duration, Integer power);

    /**
     * 回复投币充电
     *
     * @param seq        序列号
     * @param imei       IMEI码
     */
    String respInsertCoin(String seq, DeviceKey imei);


}
